home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu276.dms / pu276.adf / BBBBS / BBBBSDoors53.LZH / rexxDoors / RollDice.rexx < prev    next >
OS/2 REXX Batch file  |  1991-12-05  |  3KB  |  54 lines

  1. /* Program name: RollDice                                               */
  2. /*                                                                      */
  3. /* This program simulates the roll of two dice, and displays the        */
  4. /* results in the CLI window.                                           */
  5. /* Program taken from "AmigaDOS Inside and Out" disk by Abacus          */
  6. /*                                                                      */
  7. /* To run this program, type:                                           */
  8. /* rx rolldice                                                          */
  9. /*                                                                      */
  10. CR='0D'x
  11. d.1.1 = '   '                           /* Define dice shapes           */
  12. d.2.1 = ' * '                           /*   using 'stem' variables.    */
  13. d.3.1 = '   '                           /*                              */
  14. d.1.2 = '  *'                           /* There are actually only      */
  15. d.2.2 = '   '                           /*   five patterns here:        */
  16. d.3.2 = '*  '                           /* '   ''* *''  *'' * ''*  '    */
  17. d.1.3 = '  *'                           /*                              */
  18. d.2.3 = ' * '                           /* Can you come up with a       */
  19. d.3.3 = '*  '                           /*   more economical way of     */
  20. d.1.4 = '* *'                           /*   defining the dice shapes?  */
  21. d.2.4 = '   '
  22. d.3.4 = '* *'
  23. d.1.5 = '* *'
  24. d.2.5 = ' * '
  25. d.3.5 = '* *'
  26. d.1.6 = '* *'
  27. d.2.6 = '* *'
  28. d.3.6 = '* *'
  29.  
  30. SAY 'Total rolled is:' roll(6)||CR      /* Print total to CLI.          */
  31. EXIT                                    /* All done.                    */
  32.  
  33. roll:                                   /* Define the 'roll' function.  */
  34.   ARG n                                 /* Get high value for die.      */
  35.   x=OPEN(f,'RAM:DUMMY','W')                   /* open a dummy file.     */
  36.   IF x=0 THEN EXIT(20);                       /* should not fail, but.. */
  37.   CALL WRITELN(f,'dummy')                     /* write line             */
  38.   CALL CLOSE(f)                               /* be polite and clean    */
  39.   die1=(WORD(STATEF('RAM:DUMMY'),7)%1)//n+1      /*  0 >= micros < 3000 */
  40.   CALL DELAY(28+LEFT(die1,2))                 /* Wait for file to close */
  41.   x=OPEN(f,'RAM:DUMMY','W')                   /* open a dummy file.     */
  42.   IF x=0 THEN EXIT(20);                       /* should not fail, but.. */
  43.   CALL WRITELN(f,'dummy')                     /* write line             */
  44.   CALL CLOSE(f)                               /* be polite and clean    */
  45.   die2=(WORD(STATEF('RAM:DUMMY'),7)%1)//n+1      /*  0 >= micros < 3000 */
  46.   SAY CR
  47.   SAY '   ---      ---'CR
  48.   SAY '  |'d.1.die1'|    |'d.1.die2'|'CR           /* Print die face    */
  49.   SAY '  |'d.2.die1'|    |'d.2.die2'|'CR
  50.   SAY '  |'d.3.die1'|    |'d.3.die2'|'CR
  51.   SAY '   ---      ---'CR
  52.   SAY CR
  53.   RETURN die1+die2                      /* Return the value rolled      */
  54.